package com.itheima.d3_collection_list;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.function.Consumer;

/**
    拓展：List系列集合的遍历方式.

 List集合支持的遍历方式
 for循环（因为List集合有索引）
 迭代器
 增强for循环
 Lambda表达式

 */
public class ListTest2 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("糖宝宝");
        list.add("蜘蛛精");
        list.add("至尊宝");

        System.out.println("===============for循环=============");
        //（1）for循环
        for (int i = 0; i < list.size(); i++) {
            // i = 0 1 2
            String s = list.get(i);
            System.out.println(s);
        }

        System.out.println("===============Iterator迭代器=============");

        //（2）迭代器。
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }

     /*   //自己写一遍
        Iterator zeng = list.iterator();
        while (zeng.hasNext()){
            System.out.println(zeng.next());
        }*/

        System.out.println("=============增强for循环（foreach遍历）===============");

        //（3）增强for循环（foreach遍历）
        for (String s : list) {
            System.out.println(s);
        }
       /* 增强for循环
       for (String string : list) {
            System.out.println(string);
        }*/

        System.out.println("===========JDK 1.8开始之后的Lambda表达式=================");

        //（4）JDK 1.8开始之后的Lambda表达式
        list.forEach(s -> {
            System.out.println(s);
        });
        //自己写一遍
        list.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });
        list.forEach(s -> System.out.println(s));
        list.forEach(System.out::println);
    }
}
